package com.jdrx.sw.sewage.dao;

import com.jdrx.sw.sewage.beans.dto.*;
import com.jdrx.sw.sewage.beans.entity.StationReportAnalysisPO;
import com.jdrx.sw.sewage.beans.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface StationReportAnalysisDAO {
	
    int batchInsertHistory(Map<String, Object> params);

    List<WaterYieldVO> selectWaterYield(DnbThanSurfaceDTO waterYieldQueryDTO);

    List<ReportAnalysisVO> selectInAndOutWaterYield(WaterYieldQueryDTO waterYieldQueryDTO);

    List<StationReportAnalysisPO> selectWaterQuality(WaterQualityQueryDTO waterQualityQueryDTO);

    List<ReportAnalysisVO> selectDnbSurface(WaterYieldQueryDTO waterYieldQueryDTO);

    List<WaterYieldVO> selectTotalWaterYield(DnbThanSurfaceDTO dnbThanSurfaceDTO);

    List<WaterYieldVO> selectTotalDnbSurface(DnbThanSurfaceDTO dnbThanSurfaceDTO);

    List<ReportAnalysisVO> selectWaterCodQuality(WaterCodQualityQueryDTO waterCODQualityQueryDTO);

    List<DnbSurfaceVO> selectDnbThanSurfaceAnalysis(DnbSurfaceQueryDTO dto);

    List<ReportAnalysisVO> selectDnbStatisticsSurface(@Param("stationId") Long stationId,
                                                      @Param("reportType") Integer reportType,
                                                      @Param("time") String time);

    List<DnbSurfaceVO> selectDnbStatisticsThan(@Param("stationId") Long stationId,
                                               @Param("reportType") Integer reportType,
                                               @Param("time") String time);

    List<ReportAnalysisVO> handleWater(@Param("stationId") Long stationId,
                                       @Param("reportType") Integer reportType);

    List<Double> selectYesterday(OperationAnalysisDTO dto);

    List<StationReportAnalysisPO> selectAllYesterday(@Param("stationId") Long stationId,
                                                     @Param("dataNode") String dataNode);

    List<StationReportAnalysisPO> findByCondition(@Param("type") Integer type,
                                                  @Param("inOut") Integer inOut,
                                                  @Param("time") String time);

    void selectWaterQualityUp(WaterYieldUpDTO waterYieldUpDTO);

    void selectWaterQualityDe(WaterYieldUpDTO waterYieldUpDTO);

    List<StationReportAnalysis2VO> selectManyDataAvgMaxMin(manyDataAnalysisQueryDTO dto);

    List<StationReportAnalysisVO> selectManyData(manyDataAnalysisQueryDTO dto);

    Double findRealTimeCrrumonth(@Param("time") String time);
}